﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Microsoft.Reporting.WinForms;

namespace ВУИ
{
    public partial class SDNReport : Form
    {
        Form1 main;
        int id;
        
        public SDNReport(Form1 Main, int ID)
        {
            InitializeComponent();
            main = Main;
            id = ID;
            List<ReportParameter> paramList = new List<ReportParameter>();
            paramList.Add(new ReportParameter("ФИО", Main.lPatient[Main.itnPatietn(id)].This.Surname + " " + Main.lPatient[Main.itnPatietn(id)].This.Name + " " + Main.lPatient[Main.itnPatietn(id)].This.Patronymic));
            reportViewer1.LocalReport.SetParameters(paramList);
            List<RVReport> r = new List<RVReport>();
            if (main.lPatient[main.itnPatietn(id)]!=null)
            foreach (Fizcs f in main.lPatient[main.itnPatietn(id)].Fiz)
            {
                RVReport t = new RVReport();
                t.Месяц = Convert.ToSingle(f.Месяц) + "месяц";
                t.Масса_фактическая = f.Масса;
                t.Рост_фактический = f.Рост;
                if ((f.Месяц < 13) & (f.Месяц>0))
                {
                    if ((main.lPatient[main.itnPatietn(id)].Growth <= 1500) & (main.lPatient[main.itnPatietn(id)].Growth >1000))
                    {
                        t.Масса_долженствующая = main.lPatient[main.itnPatietn(id)].Growth+main.lAV[f.Месяц - 1].От_1001_до_1500;
                        t.Рост_долженствующий = main.lPatient[main.itnPatietn(id)].Weight+main.lAR[f.Месяц - 1].От_1001_до_1500/10;
                    }
                     if ((main.lPatient[main.itnPatietn(id)].Growth <= 2000) & (main.lPatient[main.itnPatietn(id)].Growth >1500))
                    {
                        t.Масса_долженствующая = main.lPatient[main.itnPatietn(id)].Growth+main.lAV[f.Месяц - 1].От_1501_до_2000;
                        t.Рост_долженствующий = main.lPatient[main.itnPatietn(id)].Weight+main.lAR[f.Месяц - 1].От_1501_до_2000/10;
                    }
                    if ((main.lPatient[main.itnPatietn(id)].Growth <= 2500) & (main.lPatient[main.itnPatietn(id)].Growth >2000))
                    {
                        t.Масса_долженствующая = main.lPatient[main.itnPatietn(id)].Growth+main.lAV[f.Месяц - 1].От_2001_до_2500;
                        t.Рост_долженствующий = main.lPatient[main.itnPatietn(id)].Weight+main.lAR[f.Месяц - 1].От_2001_до_2500/10;
                    }
                     if ((main.lPatient[main.itnPatietn(id)].Growth <= 1000) & (main.lPatient[main.itnPatietn(id)].Growth >800))
                    {
                        t.Масса_долженствующая = main.lPatient[main.itnPatietn(id)].Growth+main.lAV[f.Месяц - 1].От_800_до_1000;
                        t.Рост_долженствующий = main.lPatient[main.itnPatietn(id)].Weight+main.lAR[f.Месяц - 1].От_800_до_1000/10;
                    }
                     if ( (main.lPatient[main.itnPatietn(id)].Growth >2500))
                    {
                        t.Масса_долженствующая = main.lPatient[main.itnPatietn(id)].Growth+main.lAV[f.Месяц - 1].Доношеные;
                        t.Рост_долженствующий = main.lPatient[main.itnPatietn(id)].Weight+main.lAR[f.Месяц - 1].Доношеные/10;
                    }
                        
                   
                }
                if ((f.Месяц>12) & (f.Месяц<=120))
                {
                    t.Масса_долженствующая = 10 * 2 * (f.Месяц / 12);
                }
                if ((f.Месяц > 12) & (f.Месяц <= 48))
                {
                    t.Рост_долженствующий = 100 -8 * (4-(f.Месяц / 12));
                }
                if ((f.Месяц > 48))
                {
                    t.Рост_долженствующий = 100 +6 * (4 - (f.Месяц / 12));
                }
                if ((t.Масса_долженствующая != 0) | (t.Рост_долженствующий != 0))
                {
                    if (Math.Abs(t.Масса_долженствующая - t.Масса_фактическая) / (t.Масса_долженствующая * 1.0) <= 0.1)
                    {
                        t.Результат += "эйтрофия; ";
                    }
                    if (((t.Масса_долженствующая - t.Масса_фактическая) / (t.Масса_долженствующая * 1.0) > 0.1) &((t.Масса_долженствующая - t.Масса_фактическая) / (t.Масса_долженствующая * 1.0) <= 0.2))
                    {
                        t.Результат += "гипотрофия 1 степени; ";
                    }
                    if (((t.Масса_долженствующая - t.Масса_фактическая) / (t.Масса_долженствующая * 1.0) > 0.2) & ((t.Масса_долженствующая - t.Масса_фактическая) / (t.Масса_долженствующая * 1.0) <= 0.3))
                    {
                        t.Результат += "гипотрофия 2 степени; ";
                    }
                    if (((t.Масса_долженствующая - t.Масса_фактическая) / (t.Масса_долженствующая * 3.0) > 0.3) )
                    {
                        t.Результат += "гипотрофия 3 степени; ";
                    }
                    if (((t.Масса_долженствующая - t.Масса_фактическая) / (t.Масса_долженствующая * 1.0) < -0.1) & ((t.Масса_долженствующая - t.Масса_фактическая) / (t.Масса_долженствующая * 1.0) >= -0.2))
                    {
                        t.Результат += "паратрофия 1 степени; ";
                    }
                    if (((t.Масса_долженствующая - t.Масса_фактическая) / (t.Масса_долженствующая * 1.0) < -0.2) & ((t.Масса_долженствующая - t.Масса_фактическая) / (t.Масса_долженствующая * 1.0) >= -0.3))
                    {
                        t.Результат += "паратрофия 2 степени; ";
                    }
                    if (((t.Масса_долженствующая - t.Масса_фактическая) / (t.Масса_долженствующая * 1.0) < -0.3))
                    {
                        t.Результат += "паратрофия 3 степени; ";
                    }
                    if (Math.Abs(t.Рост_долженствующий - t.Рост_фактический) / (t.Рост_долженствующий * 1.0) <= 0.1)
                    {
                        t.Результат += "мезосомия; ";
                    }
                    if (((t.Рост_долженствующий - t.Рост_фактический) / (t.Рост_долженствующий * 1.0) >0.1))
                    {
                        t.Результат += "микросомия; ";
                    }
                    if (((t.Рост_долженствующий - t.Рост_фактический) / (t.Рост_долженствующий * 1.0) < -0.1))
                    {
                        t.Результат += "макросомия; ";
                    }
                   
                }
            r.Add(t);
            }
            this.reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DataSet1", r));
            List<RVReport> q = new List<RVReport>();

            foreach (Rez f in main.lPatient[main.itnPatietn(id)].Rez)
            {
                RVReport t = new RVReport();
                t.Масса_долженствующая = f.Заболеваний;
                t.Масса_фактическая = f.Месяц;
                if (f.Аллергический_синдром)
                {
                    t.Месяц = "да";
                }
                else
                {
                    t.Месяц = "нет";
                }
                float t1 = f.Заболеваний ;
                t.Рост_долженствующий = t1 / f.Месяц;
                if (t.Рост_долженствующий <= 0.32)
                    t.Результат = "хорошая резистентность";
                if ((t.Рост_долженствующий <= 0.49) & (t.Рост_долженствующий > 0.33))
                    t.Результат = "сниженная  резистентность";
                if ((t.Рост_долженствующий <= 0.66) & (t.Рост_долженствующий > 0.5))
                    t.Результат = "низкая  резистентность";
                if ((t.Рост_долженствующий > 0.66) )
                    t.Результат = "очень низкая  резистентность";
                q.Add(t);

            }
            this.reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DataSet2", q));
            List<RVReport> w = new List<RVReport>();
            foreach (Group f in main.lPatient[main.itnPatietn(id)].Gr)
            {
                RVReport t = new RVReport();
                t.Масса_долженствующая = f.Месяц;
                t.Месяц = f.Группа_здоровья;
                t.Результат = f.Hезультат_наблюдения;
                w.Add(t);

            }
            this.reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DataSet3", w));
         
            
        }

        private void SDNReport_Load(object sender, EventArgs e)
        {

            this.reportViewer1.RefreshReport();
        }

        private void reportViewer1_Load(object sender, EventArgs e)
        {

        }
    }
}
